package com.pureut.storage.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.PickingReturns;
import com.pureut.storage.dto.*;
import com.pureut.storage.export.PickingReturnsExport;
import com.pureut.storage.vo.OrderReviewVo;
import com.pureut.storage.vo.PickingRestDbVo;
import com.pureut.storage.vo.PickingReturnsVo;
import com.pureut.storage.vo.UpdateDocVo;
import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;

import java.util.List;

/**
 * @author: CM
 * @date: 2022/12/30    16:36
 */
public interface PickingReturnsService extends IService<PickingReturns> {

    /**
     * 新增委外退货
     * @param pickingReturnsVo
     * @return
     */
    boolean addReturns(PickingReturnsVo pickingReturnsVo) throws Exception;

    /**
     * 关结委外退货
     * @param pickingReturnsVo
     * @return
     */
    boolean closeReturns(PickingReturnsVo pickingReturnsVo);

    /**
     * 提交审核
     * @param ids
     * @return
     */
    boolean submitReturns(String ids);

    /**
     * 删除单据
     * @param ids
     * @return
     */
    boolean deleteReturns(String ids);

    /**
     * 修改单据
     * @param pickingReturnsVo
     * @return
     */
    boolean updateReturns(PickingReturnsVo pickingReturnsVo);

    /**
     * 查看单据
     * @param id
     * @return
     */
    PickingReturnsDto view(Long id);

    /**
     * 查看单据列表
     * @param pickingReturnsVo
     * @return
     */
    TableDataInfo<PickingReturnsDto> getList(PickingReturnsVo pickingReturnsVo, PageQuery pageQuery) throws Exception;


    /**
     * 查看单据列表
     * @param pickingReturnsVo
     * @return
     */
    List<GetPdaDto> getListPda(PickingReturnsVo pickingReturnsVo);

    /**
     * 导出
     * @param pickingReturnsVo
     * @return
     */
    List<PickingReturnsExport> getInfoExport(PickingReturnsVo pickingReturnsVo);

    /**
     * 委外退货出库(pad)
     * @param pickingRestDbVo
     * @return
     */
    PickingRestDbDto outReturns(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 委外退货拣货完成
     * @param id
     * @return
     */
    boolean subcontractingPicking(Long id) throws Exception;

    /**
     * 委外退货交接
     * @param pickingRestDbVo
     * @return
     */
    PickingRestHandoverDto overProductionReturns(PickingRestDbVo pickingRestDbVo);

    /**
     * 委外退货审核
     * @param orderReviewVo
     * @return
     */
    boolean returnReview(OrderReviewVo orderReviewVo) throws Exception;

    /**
     * 品质检验单修改仓库单据状态
     * @param updateDocVo
     * @return
     */
    boolean returnUpdateStatus(UpdateDocVo updateDocVo);

    /**
     * 拣货方案
     * @param id
     * @return
     */
    SchemeDto point(Long id);
}
